package org.footballmanager.pandafootball.system.service;

import org.footballmanager.pandafootball.system.domain.FootBfinfo;
import org.footballmanager.pandafootball.system.domain.FootUser;
import org.footballmanager.pandafootball.system.domain.FootYys;
import org.footballmanager.pandafootball.system.form.impl.FootYysSearchForm;
import org.springframework.ui.Model;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface FootYysService extends BaseService<FootYys> {
    /**
     * 获取热身赛积分榜
     *
     * @return 热身赛积分榜
     */
    List<FootYys> getJfb();

    /**
     * 设置热身赛数据
     *
     * @param bf      报分实体类
     * @param issf    胜负
     * @param request 请求
     */
    void setYysData(FootBfinfo bf, boolean issf, HttpServletRequest request);

    /**
     * 获取热身赛top10
     *
     * @return 热身赛top10
     */
    List<FootYys> findYysTop10();

    /**
     * 根据用户主键修改热身赛信用度
     *
     * @param userId  用户主键
     * @param credit  信用度
     * @param request 请求
     */
    void addCreditByUserId(Long userId, double credit, HttpServletRequest request);

    /**
     * 保存新的热身赛到数据库
     *
     * @param user    用户实体类
     * @param request 请求
     */
    void saveNewYys(FootUser user, HttpServletRequest request);

    /**
     * 根据用户主键查找热身赛记录
     *
     * @param userId 用户主键
     * @return 热身赛记录
     */
    FootYys findYysByUserId(Long userId);

    /**
     * 翻页方法
     *
     * @param footYysSearchForm 条件
     * @return 列表
     */
    List<FootYys> findall(FootYysSearchForm footYysSearchForm);

    /**
     * 查询
     *
     * @param entityname        实体类名
     * @param map               参数
     * @param footYysSearchForm 条件
     */
    void search(String entityname, Model map, FootYysSearchForm footYysSearchForm);

    /**
     * 删除所有
     *
     * @param footYysSearchForm 条件
     * @param request           请求
     */
    void deleteAll(FootYysSearchForm footYysSearchForm, HttpServletRequest request);

    /**
     * 根据用户主键删除友谊赛记录
     *
     * @param userId  用户主键
     * @param request 请求
     */
    void deleteByUserId(Long userId, HttpServletRequest request);
}